<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
       js:
       数据类型：
       1. 基本数据类型(按值传递)
       string / number / boolean / null / undefined / symbol
       2. 引用数据类型（引用传递）
       3. 数组方法：
       一、查找类
        indexOf(item)  返回值：下标  / -1
        find -> 方法 find((v, i) => {v.id === id}) 返回找到的这一项 / undefined 
        findIndex 返回值：返回-1 / 下标
        includes() // true / false
       二、截取类
        slice(1) // 不会影响原数组，
       三、删除替换
        splice(index, 0, 要替换/插入的值)
       四、排序
        sort((a, b) => {}) -1 1 0

       五、添加
       push(item) 返回新数组的长度
       unshift(item) 返回长度
       pop(item) 返回删除项
       shift() 返回...
       六、解构赋值 [] {} 解构 会声明变量 赋值变量
       []解构 一一对应
       七、... (rest参数/拓展符)
       ...rest 必须放置在参数的末尾
      */

      // function auto(a, ...rest) {
      //   console.log(a, rest)
      // }

      // auto(1, 'hello world', true, { name: 'devin', pwd: '1234' })

      // let [a, b, c] = [1, 2, 3]
      // let {
      //   o: { name, children },
      // } = { o: { name: '', children: [] } }

      // const arr = [1, 2, 3, 3, 4]
      // let item = arr.find((v, i) => v === 3)
      // console.log(item, 'item')

      // 书城案例 分组

      // 1. 收集下标在一个数组中，[5,1,2,3]
      // 1. 排序
      // 1. 查找最小下标
      // 2. 删除选中的书 splice
      // 2. 拷贝
      // 2. 替换 splice(index, 1, [1,2,3,4])
      // 3. [[1,2,3,4],5,6,7]

      // 渲染
      // 4. Array.isArray
      // 5. 渲染完成
      // 6. 恢复分组的话，拿到拷贝之前的数组，重新渲染

      function sleep() {
        return new Promise((resolve, reject) => {
          setTimeout(() => {
            resolve(true)
          }, time * 1000)
        })
      }

      async function auto() {
        await sleep(10)
      }
    </script>
  </body>
</html>
